package br.ufrj.dcc.comp2.musica.modelo;
import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Aluno extends Pessoa implements Serializable{

	private static final long serialVersionUID = 1L;
	
	private String dre;
	private String curso;
	private PeriodoLetivo periodoDeIngresso;
	private int creditos;
	private double cra;
	private Map<String, SolicitacaoInscricao> solicitacoesIncricoes;
	private Set<String> turmasInscritas;
	private Map<PeriodoLetivo, Set<String>> turmasCursadas;
	private Map<String, Double> notas;

	public Aluno(String nome, String sobrenome, String cpf, String email,
			String telefoneCelular, String nomeDeUsuario, String pwHash,
			String dre, String curso, PeriodoLetivo periodoDeIngresso) {
		super(nome, sobrenome, cpf, email, telefoneCelular, nomeDeUsuario,
				pwHash);
		this.dre = dre;
		this.curso = curso;
		this.periodoDeIngresso = periodoDeIngresso;
		solicitacoesIncricoes = new HashMap<String, SolicitacaoInscricao>();
		turmasInscritas = new HashSet<String>();
		turmasCursadas = new TreeMap<PeriodoLetivo, Set<String>>();
		notas = new TreeMap<String, Double>();
	}


	public Set<String> getTurmasInscritas() {
		return turmasInscritas;
	}

	public void setTurmasInscritas(Set<String> turmasInscritas) {
		this.turmasInscritas = turmasInscritas;
	}

	public Map<PeriodoLetivo, Set<String>> getTurmasCursadas() {
		return turmasCursadas;
	}

	public void setTurmasCursadas(Map<PeriodoLetivo, Set<String>> turmasCursadas) {
		this.turmasCursadas = turmasCursadas;
	}

	public void setSolicitacoesIncricoes(
			Map<String, SolicitacaoInscricao> solicitacoesIncricoes) {
		this.solicitacoesIncricoes = solicitacoesIncricoes;
	}

	public String getDre() {
		return dre;
	}

	public void setDre(String dre) {
		this.dre = dre;
	}

	public String getCurso() {
		return curso;
	}

	public void setCurso(String curso) {
		this.curso = curso;
	}

	public PeriodoLetivo getPeriodoDeIngresso() {
		return periodoDeIngresso;
	}

	public void setPeriodoDeIngresso(PeriodoLetivo periodoDeIngresso) {
		this.periodoDeIngresso = periodoDeIngresso;
	}

	public Map<String, SolicitacaoInscricao> getSolicitacoesIncricoes() {
		return solicitacoesIncricoes;
	}

	public void setSolicitacoesIncricoes(
			HashMap<String, SolicitacaoInscricao> solicitacoesIncricoes) {
		this.solicitacoesIncricoes = solicitacoesIncricoes;
	}

	public int getCreditos() {
		return creditos;
	}

	public void setCreditos(int creditos) {
		this.creditos = creditos;
	}

	public double getCra() {
		return cra;
	}

	public void setCra(double cra) {
		this.cra = cra;
	}

	public Map<String, Double> getNotas() {
		return notas;
	}

	public void setNotas(Map<String, Double> notas) {
		this.notas = notas;
	}
}
